你們公司最近推出了一個線上應用程式
為了保護系統和使用者數據安全,採取了各種防護措施
感覺已經天衣無縫了
不過,是否哪裡還存在安全弱點呢?
肯定還會有,也許就在一個你完全沒想到的地方:
API
很多情形下,我們可以把API 視為一種 Web 服務,而 API 端點不可避免會在駭客與惡意爬蟲面前曝光。此外,API 的使用者也可能進行濫用:因為偏離原先設計意圖的使用行為而產生不好的結果。而由於各種因素的影響,很多安全解決方案很難準確偵測出由 API 呼叫所衍生出來的攻擊行為。
API 已經成為安全攻擊的主要目標之一,它會受到憑證濫用、DDoS 攻擊、應用程式層等不同攻擊的威脅。本篇將向大家介紹由API發展出來的應用所進行的憑證濫用攻擊。
Akamai 威脅研究團隊針對不同類型的 Web 登錄行為進行了全面分析,藉此了解使用 API 進行登錄的型態到底有多普遍?還有,這種情況是否影響攻擊者以及攻擊行為?
現在,越來越多的應用程式不再使用標準 Web 請求。轉為使用 API 呼叫後,登錄過程可能是變化最大的領域之一。幾乎所有 Web 和行動應用,為了維持使用者狀態都會要求使用者登錄。以往,使用者在網頁點擊「登錄」就會發起 HTTP POST 請求,但隨著 AJAX 的進一步普及,很多 JavaScript 框架(如 jQuery 和 Angular)以及行動應用框架逐漸轉為使用 API 呼叫來發起登錄請求。
面對網路攻擊,為了向客戶提供持續保護,Akamai 一直在通過旗下的 Kona 安全產品監視分析各類惡意的登錄請求。這類通過惡意登錄發起的攻擊就叫做憑證濫用。
我們隨機挑選出一天時間,分析了來自Akamai Cloud Security Intelligence(CSI)平台的數據。從這些數據中發現,共有來自27,882,776個 IP 地址產生的413,392,955次登錄請求,這些請求主要以48,702台互聯網主機為目標。
在所有被監視的應用程式中,至少有42%在登錄過程中使用 Web 和行動 API 呼叫的方式。這些應用會使用 JSON、XML、SOAP 以及其他與 API 有關的消息格式將使用者憑證傳輸至 Web 應用。此外,有55%的應用程式使用的身份驗證是標準的表單驗證型態。還有3%的應用同時使用了這兩種方法。
分析發現,在所有使用 API 形式的登錄請求中,78%是來自行動裝置,例如原生行動應用、行動應用內部的 HTML 渲染組件等。另外22%的請求主要來自桌面瀏覽器,以及 AJAX API 呼叫和物聯網設備。
進一步分析桌面瀏覽器的AJAX API 呼叫後,我們發現這一類呼叫大部分都是「同域」AJAX 呼叫,這表示執行登錄API 呼叫操作的JavaScript 代碼來自網站內部,與所聯繫的API 端點位於同一個域名下。
「同域」和「跨域」(AJAX)登錄 API 呼叫會對安全防禦造成挑戰。一些 API 保護技術主要用於阻止自動化的攻擊工具,需要注入 JavaScript Challenge 或客戶端指紋代碼。通常只有在可以同時控制客戶端和服務器端代碼的情況下,才有可能注入JavaScript Challenge;然而如果API 是提供給多個第三方使用的,那麼這樣的API 呼叫就會成為「跨域」的,這種情況下就不能總是在客戶端執行JavaScript 代碼。
在我們分析過的所有登錄操作中,發現有**30%**的請求是惡意的,都是由各種憑證濫用攻擊所產生。這個結果讓人大吃一驚:幾乎每三個登錄請求中,就有一個是惡意的!
將它與大型(每天數百萬唯一攻擊源)憑證濫用攻擊結合起來一起分析,發現88%的攻擊者都會在攻擊過程中的某一刻,將 API 呼叫視作自己的目標。對比之下,僅有22%的攻擊者會針對標準的 Web 表單身份驗證。當然,取決於具體情況,也有攻擊者同時使用這兩種方式。
在 API 基礎上的憑證濫用攻擊、以及 Web 表單的攻擊,這兩者最主要的差異在於:每次攻擊中,企圖登陸每個應用程式的帳戶數量平均值有所不同。每個標準 Web 表單應用程式平均接收1,000,000個濫用企圖,而每個 API 應用程式對應的數量增加了四倍,約為4,000,000個!
很多解決方案會藉助設備指紋、CAPTCHA 以及 JavaScript Challenge 的方式加以應對,雖然這些檢測方法在標準的 Web 生態體系裏成效頗章,但並不適合行動環境。
某些供應商(當然也包括 Akamai 在內)提供的解決方案,可以明確區分使用行動應用的到底是人類還是機器人。這類檢測需要行動應用開發者在應用中包含一個由技術供應商提供的特殊SDK,該SDK 可以檢測並分析行動設備的各類指標和遙測數據,其中還包括各類可度量的值,例如定位數據、螢幕觸控手勢、螢幕分辨率和方向、網路連接類型等。
朝 API 相關內容發起攻擊,一個重要因素在於,必須能夠輕鬆地將大量攻擊負載分散到數千個機器人節點上。由於以 API 為基礎的登錄,主要是供使用者以撰寫程式的方式使用的,因此敵人可以很輕鬆地構建出分散式的殭屍網絡,來分攤攻擊負載——這種方法對憑證濫用攻擊至關重要:任何應用都會在三次失敗登錄後暫時阻止使用者繼續嘗試,這就迫使攻擊者不得不降低攻擊頻率和速度,每個節點在24小時內可能只會發送大約3-5次登錄請求。
我們的研究結果也證明了這樣的猜測。平均來說,一次以 API 為基礎的攻擊活動會用到19,000個唯一 IP 地址,而針對標準 Web 表單登錄方式的攻擊平均只用到4,000個 IP 地址。這也表示若要進行以 API 登錄為基礎的攻擊,殭屍網路的規模必須擴大4.75倍。
身份驗證 API 已成為憑證濫用的主要目標,為了防範此類威脅,企業必須確保無論使用什麼解決方案,必須能妥善處理下列問題:
✓ 能解析並理解 Web 和行動 API 呼叫產生的消息,並擁有技術能夠全面檢測並保護相關應用。
✓ 能區分自動化攻擊和惡意攻擊。
✓ 能針對與 API 有關的安全事件提供仔細的日誌和能見性。
✓ 能提供簡潔易用的 API 安全管理解決方案,幫助使用者針對不同 API 端點分配不同安全策略,並針對所有向外部使用者曝光的 API 提供能見性。
✓ 提供客戶端聲譽資訊和相關情報,在上述保護機制無法有效防禦的情況下,這些資訊可作為最終防線。
目前,Akamai 借助旗下的 智慧型邊緣平台(Intelligent edge Platform),每天可完成超過2250億條有關 API 與 Web 服務的事務。為了改善Web 與行動應用的性能、規模、可靠性,並實現反安裝(Offload),Akamai 針對API 的使用特點提供了一系列獨有的功能,為Web 和行動應用提供了API 加速、快取、壓縮、保護、閘道器以及API Prioritization Cloudlet 功能,為使用者塑造更快速、流暢、安全的使用者體驗。